/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import exception.SoluzioneException;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import schema.Simbolo;

/**
 *
 * @author Antonio
 */
public abstract class JPanelFutoshikiSolverModel extends JPanel {

    private List<int[][]> soluzioni;
    protected List<Simbolo> simboli;
    private int numSol;

    public JPanelFutoshikiSolverModel(List<int[][]> soluzioni, List<Simbolo> simboli) {

        super();

        this.soluzioni = soluzioni;
        this.simboli = simboli;
        this.numSol = 0;
    }

    protected int[][] primaSol() throws SoluzioneException {

        if (soluzioni.isEmpty()) {

            throw new SoluzioneException();
        }

        return soluzioni.get(0);
    }// primaSol

    protected int[][] prossimaSol(JPanel p) throws SoluzioneException {

        if (numSol >= soluzioni.size() - 1) {

            throw new SoluzioneException();
        }

        ++numSol;
        p.setBorder(javax.swing.BorderFactory.createTitledBorder("Soluzione " + (numSol + 1)));
        return soluzioni.get(numSol);
    }// prossimaSol

    protected int[][] precedenteSol(JPanel p) throws SoluzioneException {

        if (numSol <= 0) {

            numSol = 0;
            throw new SoluzioneException();
        }

        --numSol;
        p.setBorder(javax.swing.BorderFactory.createTitledBorder("Soluzione " + (numSol + 1)));
        return soluzioni.get(numSol);
    }// precedenteSol
}
